package org.Yiran.timetale_re.item.tool.screwdriver.modules.type;

import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.IModule;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleCategory;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleType;

/**
 * 朝向模块接口
 * <p>
 * 定义朝向模块的通用功能，用于旋转方块
 * </p>
 */
public interface RotationModule extends IModule {
    
    /**
     * 旋转方块
     * <p>
     * 旋转指定位置的方块朝向
     * </p>
     *
     * @param level 当前世界
     * @param pos   方块位置
     * @param state 方块状态
     * @return 是否成功旋转
     */
    default boolean rotateBlock(Level level, BlockPos pos, BlockState state) {
        // 默认实现：更新方块状态以旋转方块
        return false;
    }
    
    /**
     * 获取模块类型
     *
     * @return 模块类型
     */
    @Override
    default ModuleType getModuleType() {
        return ModuleType.ROTATION;
    }
    
    /**
     * 获取模块分类
     *
     * @return 模块分类
     */
    @Override
    default ModuleCategory getModuleCategory() {
        return ModuleCategory.FUNCTION;
    }
}